package main

import (
	"crypto/md5"
	"fmt"
	"github.com/anaskhan96/go-password-encoder"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"sale_system/user_srv/model"
)

func getMD5Hash(pwd string) string { // 创建md5

	options := &password.Options{10, 10000, 10, md5.New}
	salt, encodePassword := password.Encode(pwd, options)

	//// 进行验证是否可以完成加密后验证
	//verify := password.Verify(pwd, salt, encodePassword, options)
	//fmt.Println(verify)

	// 但是实际业务上，我们验证时，从数据库中取出我们的数据，但是我们并不知道salt和encodePassword和对应的算法
	// 所以实际上，我们获得encodePassword后需要根据一定的规定拼接然后再存储

	storagePwd := fmt.Sprintf("$pbkdf2-md5$%s$%s", salt, encodePassword)

	// // 验证是否正确
	//storagePwdSlice := strings.Split(storagePwd, "$")
	//fmt.Println(storagePwdSlice)
	//verify := password.Verify(pwd, storagePwdSlice[2], storagePwdSlice[3], options)
	//fmt.Println(verify)

	return storagePwd // 这个时候就能够存进数据库，后续比对密码的时候，将用户的密码提取，然后进行解析
}

// 注意如果连接不上：需要打开虚拟机，并输入docker start mysql-server
func main() {
	//dsn := "用户名:密码@tcp(host地址:3306)/数据库名?charset=utf8mb4&parseTime=True&loc=Local"

	dsn := "root:123456@tcp(192.168.56.101:3306)/sale_user_srv?charset=utf8mb4&parseTime=True&loc=Local"
	db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{})

	// 根据Product结构体在数据库中创建表
	_ = db.AutoMigrate(&model.User{})

}

// 关于增删查改的接口在这里看
// https://gorm.io/zh_CN/docs/create.html
